--- created: source_filename: /home/runner/work/mknodes/mknodes/mknodes/pages/mkclasspage/__init__.py source_function: MkClassPage.__init__ source_line_no: 46 hide: - toc icon: material/help status: new template: SUMMARY.html title: MkInstallGuide --- [:fa-brands-github: Show source on GitHub](https://github.com/phil65/mknodes/blob/main/mknodes/templatenodes/mkinstallguide/__init__.py) ### Node to display an install guide. === "Examples" ### Example: **Regular** !!! jinja "Jinja" ``` {.jinja } {{ mk.MkInstallGuide() }} ``` !!! python "Python" ``` {.python } MkInstallGuide() ``` ===! "Rendered" ### pip The latest released version is available at the [Python package index](https://pypi.org/project/mknodes). ```` {.python } pip install mknodes ```` ### pipx [pipx](https://github.com/pypa/pipx) allows for the global installation of Python applications in isolated environments. ```` {.python } pipx install mknodes ```` === "Markdown" ``` {.markdown } ### pip The latest released version is available at the [Python package index](https://pypi.org/project/mknodes). ```` {.python } pip install mknodes ```` ### pipx [pipx](https://github.com/pypa/pipx) allows for the global installation of Python applications in isolated environments. ```` {.python } pipx install mknodes ```` ``` === "Html" ``` {.html } ``` ### Example: **Explicit** !!! jinja "Jinja" ``` {.jinja } {{ "mkdocs" | MkInstallGuide(package_repos=["pip", "pipx"]) }} ``` !!! python "Python" ``` {.python } MkInstallGuide('mkdocs', package_repos=['pip', 'pipx']) ``` ===! "Rendered" ### pip The latest released version is available at the [Python package index](https://pypi.org/project/mkdocs). ```` {.python } pip install mkdocs ```` ### pipx [pipx](https://github.com/pypa/pipx) allows for the global installation of Python applications in isolated environments. ```` {.python } pipx install mkdocs ```` === "Markdown" ``` {.markdown } ### pip The latest released version is available at the [Python package index](https://pypi.org/project/mkdocs). ```` {.python } pip install mkdocs ```` ### pipx [pipx](https://github.com/pypa/pipx) allows for the global installation of Python applications in isolated environments. ```` {.python } pipx install mkdocs ```` ``` === "Html" ``` {.html }

pip

The latest released version is available at the Python package index.

pip install mkdocs
        

pipx

pipx allows for the global installation of Python applications in isolated environments.

pipx install mkdocs
        
``` === "Repr tree" ``` MkInstallGuide ├── MkHeader('pip', level=3) ├── MkCode('pip install mkdocs') │ ╰── MkText('pip install mkdocs') ├── MkHeader('pipx', level=3) ╰── MkCode('pipx install mkdocs') ╰── MkText('pipx install mkdocs') ``` === "DocStrings" ::: mknodes.MkInstallGuide options: show_docstring_description: False === "Base classes" | Name | Children | Inherits | |--- | --- | --- | | **[MkTemplate](https://phil65.github.io/mknodes/)**
*mknodes.templatenodes.mktemplate*
Node representing a jinja template\. | | | === "⋔ Inheritance diagram" ``` mermaid graph TD 94721312453024["mkinstallguide.MkInstallGuide"] 94721308869584["mktemplate.MkTemplate"] 94721311697232["mkcontainer.MkContainer"] 94721308848336["mknode.MkNode"] 94721311766592["node.Node"] 140564252373184["builtins.object"] 94721308869584 --> 94721312453024 94721311697232 --> 94721308869584 94721308848336 --> 94721311697232 94721311766592 --> 94721308848336 140564252373184 --> 94721311766592 ``` === "NodeFile" ``` {.toml title='/home/runner/work/mknodes/mknodes/mknodes/templatenodes/mkinstallguide/metadata.toml'} [metadata] name = "MkInstallGuide" icon = "mdi:help" group = "documentation" virtual_children = true [examples.regular] title = "Regular" jinja = """ {{ mk.MkInstallGuide() }} """ [examples.explicit] title = "Explicit" jinja = """ {{ "mkdocs" | MkInstallGuide(package_repos=["pip", "pipx"]) }} """ [output.markdown] template = """ {% for method in node.package_repos %} {{ method.ID | MkHeader(level=node.header_level) }} {{ method.info_text() }} {{ method.install_instructions() | MkCode }} {% endfor %} """ # proj = self.associated_distribution # if method.ID == "pip" and proj and (extras := proj.info.extras): # extras_str = ",".join(extras) # text = f"{method.install_instructions()}[{extras_str}]" # code = mkcode.MkCode(text) # items.append(code) ``` === "Code" ``` {.python title='mknodes.templatenodes.mkinstallguide.MkInstallGuide' linenums='13'} class MkInstallGuide(mktemplate.MkTemplate): """Node to display an install guide.""" ICON = "material/help" VIRTUAL_CHILDREN = True def __init__( self, distribution: str | None = None, *, package_repos: list[installmethods.InstallMethodStr] | None = None, header_level: int = 3, **kwargs: Any, ): """Constructor. Args: distribution: name of the distribution to install package_repos: package repositories the project is available on header_level: Header level for each section kwargs: Keyword arguments passed to parent """ super().__init__("output/markdown/template", **kwargs) self._distribution = distribution self.header_level = header_level self._package_repos = package_repos @property def package_repos(self) -> list[installmethods.InstallMethod]: if self._package_repos: return [ installmethods.InstallMethod.by_id(i)(self.distribution) for i in self._package_repos ] return self.ctx.metadata.package_repos or [] @property def distribution(self): return self._distribution or self.ctx.metadata.distribution_name @distribution.setter def distribution(self, value): self._distribution = value ```